#include "ti_msp_dl_config.h"
#include "clock.h"

volatile unsigned long tick_ms;
volatile uint32_t start_time;

uint32_t get_tick(void)
{
    return tick_ms;
}

int mspm0_delay_ms(unsigned long num_ms)
{
    start_time = tick_ms;
    while (tick_ms - start_time < num_ms);
    return 0;
}

// 函数：获取毫秒级时钟
// 参数：unsigned long *count：指向存储毫秒数的指针
// 返回值：int：成功返回0，失败返回1
// 函数：获取毫秒级时钟
// 参数：count：毫秒级时钟的值
// 返回值：0：成功；1：失败
int mspm0_get_clock_ms(unsigned long *count)
{
    // 如果count为空，返回1
    if (!count)
        return 1;
    // 将tick_ms的值赋给count[0]
    count[0] = tick_ms;
    return 0;
}

// 延时函数，延时 us 微秒
void delay_us(uint32_t us)
{

    //工程中的主频默认是32MHz，如果有修改请使用修改后的主频
    while (us--)
    {
        delay_cycles(80);
    }
}


void delay_ms(uint32_t ms)
{

    //工程中的主频默认是32MHz，如果有修改请使用修改后的主频
    while (ms--)
    {
        delay_cycles(80000);
    }
}


void SysTick_Init(void)
{
    DL_SYSTICK_config(CPUCLK_FREQ/1000);
    NVIC_SetPriority(SysTick_IRQn, 0);
}
